﻿<?php
	
	/**
      * Funkcja sprawdza czy zostały wypełnione wymagane pola formularza/
      *
      * @param array $formularz Tablica zawierająca pola formularza
      * @param array $wzorzec Tablica zawierająca informacje jakie pola w formularzu są wymagane
      * @param array $bledy_formularza Tablica przechowująca błędy danych dla formularza
      */
     function wymagaj_danych($formularz, $wzorzec, &$bledy_formularza) {

         foreach ($wzorzec as $pole) {
             if ( !isset($formularz[$pole]) 
                 || $formularz[$pole] == '' ) {
                 blad_formularza($bledy_formularza, $pole, 'Powy?sze pole jest wymagane.');
             }   
         }

     }
	 
	/**
      * Przygotowanie zmiennych pochodzących z formularza do przetworzenia przez skrypt.
      *
      * @param array $formularz Tablica zawierająca dane pochodzące z formularza
      * @param array $wzorzec Tablica zawierająca informacje jakie pola w formularzu mają zostać przetworzone
      *
      * @return array Tablica przetworzonych pól
      */
     function pobierz_dane_z_formularza(&$formularz, $wzorzec) {
     
         $dane = array();
     
         foreach ($wzorzec as $pole) {
             if ( isset($formularz[$pole]) 
                 && $formularz[$pole] != '' ) {
                 $dane[$pole] = trim($formularz[$pole]);
             }
             else {
                 $dane[$pole] = '';
             }
         }
         
         return $dane;
    }
	 
	 /**
      * Sprawdzenie poprawności identyfikatora użytkownika.
      * 
      * @param array $bledy_formularza Tablica przechowująca błędy danych dla formularza   
      * @param array $formularz Tablica pól pochodzących z formularza
      * @param string $pole Nazwa pola do sprawdzenia
      * @return boolean Wynik sprawdzania pola
      */
     function sprawdz_pole_login(&$bledy_formularza, $formularz, $pole) {
         
         if ( strlen($formularz[$pole]) < 8 ) {
             blad_formularza($bledy_formularza, $pole, 'Wprowadzona wartość w pole Identyfikator użytkownika jest za krótka.');
             return false;
         }
         elseif ( strlen($formularz[$pole]) > 16 ) {
             blad_formularza($bledy_formularza, $pole, 'Wprowadzona wartość w pole Identyfikator użytkownika jest za długa.');
             return false;
         }       
         elseif ( !preg_match('/^[A-Za-z0-9]+$/', $formularz[$pole]) ) {
             blad_formularza($bledy_formularza, $pole, 'Pole Identyfikator użytkownika zawiera nieprawidłowe znaki.');
             return false;
         }
         else {
             return true;
         }
         
     } 
     
     /**
      * Sprawdzenie poprawności hasła.
      * 
      * @param array $bledy_formularza Tablica przechowująca błędy danych dla formularza   
      * @param array $formularz Tablica pól pochodzących z formularza
      * @param string $pole Nazwa pola do sprawdzenia
      * @return boolean Wynik sprawdzania pola
      */
     function sprawdz_pole_haslo(&$bledy_formularza, $formularz, $pole) {
         
         if ( strlen($formularz[$pole]) < 8 ) {
             blad_formularza($bledy_formularza, $pole, 'Wprowadzona wartość w pole Hasło jest za krótka.');
             return false;
         }
         elseif ( strlen($formularz[$pole]) > 16 ) {
             blad_formularza($bledy_formularza, $pole, 'Wprowadzona wartość w pole Hasło jest za długa.');
             return false;
         }       
         elseif ( !preg_match('/^[A-Za-z0-9]+$/', $formularz[$pole]) ) {
             blad_formularza($bledy_formularza, $pole, 'Pole Hasło zawiera nieprawidłowe znaki.');
             return false;
         }
         else {
             return true;
         }
         
     }
     
     /**
      * Sprawdzenie poprawności formularza logowania.
      * 
      * @param array $bledy_formularza Tablica przechowująca błędy danych dla formularza   
      * @param array $formularz Tablica pól pochodzących z formularza
      * @param array $wzorzec Tablica zawierająca informację o polach w formularzu
      */
     function sprawdz_formularz_logowania(&$bledy_formularza, $formularz, $wzorzec) {
        wymagaj_danych($formularz, $wzorzec, $bledy_formularza);
		sprawdz_pole_login($bledy_formularza, $formularz, 'login');
        sprawdz_pole_haslo($bledy_formularza, $formularz, 'haslo');
     }
	 /**
     * Sprawdzenie poprawno?ci formularza rejestracji.
     *
     * @param array $bledy_formularza Tablica przechowuj?ca b??dy danych dla formularza  
     * @param array $formularz Tablica pól pochodz?cych z formularza
     * @param array $wzorzec Tablica zawieraj?ca informacj? o polach w formularzu
     */
    function sprawdz_formularz_rejestracji(&$sql,&$bledy_formularza, $formularz, $wzorzec) {
        wymagaj_danych($formularz, $wzorzec, $bledy_formularza);
        sprawdz_pole_login($bledy_formularza, $formularz, 'login');
        sprawdz_pole_haslo($bledy_formularza, $formularz, 'haslo');
		sprawdz_pole_haslo($bledy_formularza, $formularz, 'haslo2');
		porownaj_hasla($bledy_formularza, $formularz,'haslo', 'haslo2');
		sprawdz_czy_istnieje($sql,$bledy_formularza, $formularz,'login');
    }
	
	/**
     * Sprawdzenie czy vwpisane hasla sa takie same
     *
     * @param array $bledy_formularza Tablica przechowuj?ca b??dy danych dla formularza  
     * @param array $formularz Tablica pól pochodz?cych z formularza
     * @param string $pole1 Nazwa pola do sprawdzenia
     * @param string $pole2 Nazwa pola do sprawdzenia
     * @return boolean Wynik sprawdzania pola
     */
    function porownaj_hasla(&$bledy_formularza, $formularz, $pole1, $pole2) {
       

        if ( $formularz[$pole1] == $formularz[$pole2])
	{
	 return true;
	}
        else {
	 blad_formularza($bledy_formularza, $pole1, 'Wprowadzone hasla sie roznia');
	 blad_formularza($bledy_formularza, $pole2, 'Wprowadzone hasla sie roznia');
         return false; 
            
        }
       
    }
	/**
	* Wstawienie do tablicy bledów formularza informacji o błędnie wypełnionym polu wraz z opisem.
	*
	* @param array $bledy_formularza Tablica zawierająca ewentualne błędy formularza
	* @param string $pole Nazwa błędnie wypełnionego pola
	* @param string $opis_bledu Opis błedu
	*/
	function blad_formularza(&$bledy_formularza, $pole, $opis_bledu='Nieprawidłowa wartość w powyższym polu') {
     $bledy_formularza = $bledy_formularza + array($pole => $opis_bledu);
	}
	
	